>> ultrafil >> Tutoraux OpenGL >> RadialBlur
Infos Logiciels Jeux écrans de veille Fonds d'écran OpenGL Prog 3D Liens
- Radial Blur -
Cette technique permet de réaliser un effet de flou, ou alors un effet de projection de lumiére. Elle utilise une texture de blur et le principe de recopie du viewport sur celle-ci. La difference avec le motion blur vient du fait que l'algo que l'on va utiliser autour de ca va donner des radiales plutôt que des trainées.
Algorithme
On utilise la meme texture de blur qu'au chapitre précédent.
L'algo se trouve dans la fonction principale d'affichage CDemo :: DrawGLScene();, dans le fichier cdemo.cpp. On redimmensionne le viewport a la taille de la texture. On dessine ce que l'on veut. Ensuite on copie le viewport sur la texture de blur. Puis on vide les buffer.
Maintenant que l'on a recopié l'objet sur notre texture, on va travailler sur celle-ci afin d'obtenir un effet de 'radiation' de l'objet. Tout l'algo se trouve donc dans la fonction CDemo :: RenderRadialBlur(); on lui envoi la texture de blur et les parametres de radiation (la portance et la distance entre chaque radial)
Pour finir si vous voulez obtenir un effet de lumiere comme ci-dessous, l'objet que vous dessinerez ne dvra ps avoir de texture. Au moment du dessin la texture 2D doit etre desactive. Et la fonction glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 0, 0, 512, 512, 0); prend GL_LUMINANCE en argument au lieu de GL_RGBA.
Par contre si vous voulez un effet de flou comme l'image de presentation de ce chapitre laissez GL_RGBA. Dans la source que je vous ai mis en telechargement, les deux cas sont gérés l'un apres l'autre dans le temps.
Rendu
rendu
Conclusion
Comme pour le motion blur, cet algo prend pas mal de ressource, mais le resultat est de taille.

Retour